#include "TimeDialog.h"
#include <QFont>    // 字体

Timer::Timer()
{
    // 初始化界面
    m_label = new QLabel(this);

    // 设置边框凹陷效果，因为QLabel如果不指定显示文本的话是看不见的，所以要加点效果
    m_label->setFrameStyle(QFrame::Panel | QFrame::Sunken);

    // 设置水平和垂直都是居中显示
    m_label->setAlignment(Qt::AlignCenter | Qt::AlignVCenter);

    // 设置字体大小
    QFont font;
    font.setPointSize(22);
    m_label->setFont(font);

    m_button = new QPushButton("获取当前时间", this);
    m_button->setFont(font);

    // 垂直布局
    QVBoxLayout *layout = new QVBoxLayout(this);
    layout->addWidget(m_label);
    layout->addWidget(m_button);

    // 设置布局器
    setLayout(layout);

    // 信号和槽连接
    QObject::connect(m_button, SIGNAL(clicked(bool)), this, SLOT(getTimer()));

    // 将自定义的信号与QLabel的setText()槽函数连接
    // 由于信号是自定义的，所以信号发送者只能写this指针，类比之前的如果槽函数是自定义的，那么接收者只能写this指针
    QObject::connect(this, SIGNAL(mySignal(QString)), m_label, SLOT(setText(QString)));
}

void Timer::getTimer()
{
    qDebug("getTime");
    qDebug() << "getTime";
    QTime time = QTime::currentTime();
    QString str = time.toString("HH:mm:ss");

    // m_label->setText(str);      // QLable的setText()也是一个槽函数，槽函数也可以当作普通函数使用
    emit mySignal(str);            // 发射信号，emit是Qt的关键字，相当于标记一下这是要发射信号
}
